﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;

namespace GestorDeFlotasDesktop.AbmAuto
{
    public partial class AbmAuto : FormABMBase
    {
        public static int BLANCO = -1;
        public AbmAuto(ModoAbm modoAbm)
            : base(modoAbm)
        {
            InitializeComponent();
        }

        public Auto MyAuto { get; set; }

        private void tL_AutosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.tL_AutosBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.gD1C2012DataSet);

        }

        private void AbmAuto_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'gD1C2012DataSet.TL_Autos' Puede moverla o quitarla según sea necesario.
            this.tL_AutosTableAdapter.Fill(this.gD1C2012DataSet.TL_Autos);

            GD1C2012DataSet.TL_Marcas_AutosDataTable marcasDTAuto = new GD1C2012DataSet.TL_Marcas_AutosDataTable();
            GD1C2012DataSet.TL_Marcas_RelojesDataTable marcasDTReloj = new GD1C2012DataSet.TL_Marcas_RelojesDataTable();
            this.HabilitarControles();

            TL_Marcas_AutosTableAdapter marcasAuto = new TL_Marcas_AutosTableAdapter();
            TL_Marcas_RelojesTableAdapter marcasReloj = new TL_Marcas_RelojesTableAdapter();
            marcasAuto.Fill(marcasDTAuto);
            marcasReloj.Fill(marcasDTReloj);

            foreach (var item in marcasDTReloj)
            {
                this.comboBox_reloj.Items.Add(new ItemCombo(item.marca_codigo, item.marca_nombre));
            }

            foreach (var item in marcasDTAuto)
            {
                this.comboBox_marcas.Items.Add(new ItemCombo(item.marca_codigo, item.marca_nombre));

            }
        }

        private void HabilitarControles()
        {
            this.boton_seleccionar.Visible = this.modoAbm == ModoAbm.Consulta;
            this.boton_agregar.Visible = this.modoAbm != ModoAbm.Consulta;
            this.tL_AutosDataGridView.Columns["modificar"].Visible = this.modoAbm != ModoAbm.Consulta;
            this.tL_AutosDataGridView.Columns["eliminar"].Visible = this.modoAbm != ModoAbm.Consulta;
        }

        private void boton_agregar_Click(object sender, EventArgs e)
        {
            {
                DatosAuto datosAuto = new DatosAuto(ModoAbm.Alta);
                if (datosAuto.ShowDialog() == DialogResult.OK)
                {
                    
                }
            }
        }

        private void boton_cerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void buscar_Click(object sender, EventArgs e)
        {
            ItemCombo optionMarcaSelected = (ItemCombo)this.comboBox_marcas.SelectedItem;
            ItemCombo optionRelojSelected = (ItemCombo)this.comboBox_reloj.SelectedItem;

              
            if (optionMarcaSelected == null)
            {
                optionMarcaSelected = new ItemCombo(-1, "");
                this.comboBox_marcas.SelectedIndex = BLANCO;
            }

            if (optionRelojSelected == null)
            {
                optionRelojSelected = new ItemCombo(-1, "");
                this.comboBox_reloj.SelectedIndex = BLANCO;
            }

            if (this.comboBox_reloj.SelectedIndex != BLANCO && this.comboBox_marcas.SelectedIndex != BLANCO)
                {
                    this.tL_AutosTableAdapter.FillByMarcaYReloj(this.gD1C2012DataSet.TL_Autos, optionMarcaSelected.Codigo, optionRelojSelected.Codigo, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_patente.Text), string.Format("%{0}%", this.textBox_licencia.Text));
                }
            else{

                if (this.comboBox_reloj.SelectedIndex != BLANCO)
                {
                    this.tL_AutosTableAdapter.FillByRelojSinMarca(this.gD1C2012DataSet.TL_Autos, optionRelojSelected.Codigo, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_patente.Text), string.Format("%{0}%", this.textBox_licencia.Text));
                }
                else if (this.comboBox_marcas.SelectedIndex != BLANCO)
                {
                    this.tL_AutosTableAdapter.FillByMarcaAutoSinReloj(this.gD1C2012DataSet.TL_Autos, optionMarcaSelected.Codigo, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_patente.Text), string.Format("%{0}%", this.textBox_licencia.Text));
                }
                else {
                    this.tL_AutosTableAdapter.FillBy(this.gD1C2012DataSet.TL_Autos, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_patente.Text), string.Format("%{0}%", this.textBox_licencia.Text));
                }
            }
        }
        
        /*Este metodo esta encargado de limpiar los filtros de busqueda*/
        private void boton_limpiar_Click(object sender, EventArgs e)
        {         
            textBox_modelo.Clear();
            textBox_licencia.Clear();
            textBox_patente.Clear();
            comboBox_marcas.Text ="";
            comboBox_marcas.SelectedIndex = BLANCO;
            comboBox_reloj.Text="";
            comboBox_reloj.SelectedIndex = BLANCO;        
        }

        private void boton_seleccionar_Click(object sender, EventArgs e)
        {
            if (tL_AutosDataGridView.SelectedRows.Count < 0) MyAuto = null;

            this.MyAuto = new Auto((int)tL_AutosDataGridView["auto_codigo", tL_AutosDataGridView.SelectedRows[0].Index].Value);
            this.DialogResult = DialogResult.OK;
        }

        private void tL_AutosDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || (e.ColumnIndex != tL_AutosDataGridView.Columns["modificar"].Index && e.ColumnIndex != tL_AutosDataGridView.Columns["eliminar"].Index)) return;
            Int32 auto_codigo = (Int32)tL_AutosDataGridView["auto_codigo", e.RowIndex].Value;
 
            if (e.ColumnIndex == tL_AutosDataGridView.Columns["modificar"].Index)
            {

                Reloj reloj = new Reloj();
                reloj.codigoReloj = (int)tL_AutosDataGridView["auto_reloj_codigo", e.RowIndex].Value;
                reloj.numeroDeSerie = (string)tL_AutosDataGridView["reloj_nro_serie", e.RowIndex].Value;
                reloj.marca = (string)tL_AutosDataGridView["marca_reloj", e.RowIndex].Value;
 
    
                DatosAuto datosAuto = new DatosAuto(ModoAbm.Modificacion, new Auto(auto_codigo, reloj).Cargar());
                if (datosAuto.ShowDialog() == DialogResult.OK)
                {
                    RefrescarDataGrid();
                }
            }
            else if (e.ColumnIndex == tL_AutosDataGridView.Columns["eliminar"].Index)
            {
                if ((Boolean)tL_AutosDataGridView["auto_es_activo", e.RowIndex].Value)
                {
                    new Auto(auto_codigo).SetInactivo();
                    RefrescarDataGrid();
                }
            }
        }

        private void RefrescarDataGrid()
        {
            // Codigo para refrescar el DataGridView
            this.gD1C2012DataSet.GetChanges();
            this.tL_AutosTableAdapter.Fill(this.gD1C2012DataSet.TL_Autos);

        }

    }
}
